如何给你画的图选一个看起来舒服的字体?
不知道大家有没有遇到过,在R中使用中文,是特别头疼的一件事,不是报错就是乱码。
我想要这样,结果成了这样……,欲哭无泪有木有……
这是因为R 的很多图形设备只能使用一些标准的字体,但它们往往不包含中文的字符。而包含中文的字体,如宋体、黑体等,R 又不知道如何使用它们。
不过现在有了一个showtext包可以帮我们解决这个问题,showtext可以自动加载系统内的字体,也可以调用google字体库中的字体。当然我们也可以自己下载任意的字体,加载使用。
其实showtext加载系统字体是内部调用了sysfonts包,这个包有个函数:
font.add(family, regular, ...)
参数family是你给这个字体赋予的名称,在后面的绘图命令中你将通过它来引用这个字体。参数regular是字体文件的路径,如果字体在系统的标准位置(例如 Windows 的 C:\Windows\Fonts)或是当前的工作目录,则可以直接输入文件名。例如,在 Windows系统下,以下命令将导入系统中的楷体文件,并给它取名为“kaishu”:
font.add("kaishu", "simkai.ttf")
当然sysfonts还提供了一个调用google字体库(http://www.google.com/fonts
)的函数,当然,由于某些原因,此网站可能打不开……:
参数name就是google字体库中的名称,参数family是你要赋予的名称,比如:
font.add.google("Schoolbell", "bell")
添加完字体之后,可以使用font.families()函数来查看当前可用的字体名称,不出意外的话,可以看到自己添加的字体已经在系统中了:
showtext包的安装,大家可以在CRAN上找到:
https://cran.r-project.org/web/packages/showtext/index.html
install.packages("showtext")
睁大你的眼睛,一大波靓图来袭
以上图片来源于https://github.com/yixuan/showtext
showtext的用法比较简单,目前有两种方法调用:
函数showtext.begin()和showtext.end()。我们需要做的就是把绘图的命令包含在这两个语句中间,然后在适当的地方选取字体即可。
函数showtext.auto(),直接放在绘图开头。
孙老湿举栗子
下面的例子是在github上的盗图,供学习:
需要注意的是,如果用Rstudio工作界面,可能在绘图区看不到字体的效果,需要保存成文件,在查看。
当然还有更好玩的字体设置,有兴趣可以供参考:
https://cosx.org/2014/01/showtext-interesting-fonts-and-graphs
有任何问题,欢迎在文末留言讨论。
/End.
扫码关注,获取更多精彩内容
我
是
彩
蛋
喜马拉雅FM搜索并订阅:生信者言;收听内容:
《一分钟听懂NGS基础概念》,让生信分析不再遥不可及
《亲爱的姑娘,你值得被温柔以待》,11个真实的人物故事
《众病之王:癌症传》,一起聆听人类对抗癌症的斗争史
回复文字:果然科学,看一篇好玩的科普文。